import request from './axios'
import qs from 'qs'

/**
 * get请求
 * @param {*} url 链接
 * @param {*} parameter 参数 
 * @returns 
 */
export function getRestful (url, parameter) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('get url:%s, query-param:%s', url, qs.stringify(parameter))
  }
  return request({
    url: url + "/" + parameter,
    method: 'get'
  })
}

/**
 * get请求
 * @param {*} url 链接
 * @param {*} parameter 参数 
 * @returns 
 */
export function get (url, parameter) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('get url:%s, query-param:%s', url, qs.stringify(parameter))
  }
  return request({
    url: url,
    method: 'get',
    params: parameter
  })
}

/**
 * get请求
 * @param {*} url 链接
 * @param {*} parameter 参数 
 * @returns 
 */
export function getByHeaders (url, parameter, headers) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('get url:%s, query-param:%s,headers:%s', url, qs.stringify(parameter), qs.stringify(headers))
  }
  return request({
    url: url,
    method: 'get',
    headers: headers,
    params: parameter
  })
}

/**
 * post请求
 * @param {*} url 链接
 * @param {*} parameter 参数
 * @param {*} type 类型 json form upload
 * @returns 
 */
export function post (url, parameter, type) {
  if (typeof (type) === 'undefined') {
    type = 'json'
  }
  if (type === 'form') {
    return postForm(url, parameter)
  } else if (type === 'upload') {
    return uploadForm(url, parameter)
  } else {
    return postJson(url, parameter)
  }
}

/**
 * post json请求
 * @param {*} url 链接
 * @param {*} parameter 参数
 * @returns 
 */
export function postJson (url, parameter) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('postJson url:%s, post-param:%s', url, JSON.stringify(parameter))
  }
  if (typeof parameter !== 'string') {
    parameter = JSON.stringify(parameter)
  }
  return request({
    url: url,
    method: 'post',
    data: parameter,
    headers: {
      'Content-type': 'application/json;charset=UTF-8'
    }
  })
}

/**
 * post 表单请求
 * @param {*} url 链接
 * @param {*} parameter 参数
 * @returns 
 */
export function postForm (url, parameter) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('postForm url:%s, post-param:%s', url, qs.stringify(parameter))
  }
  return request({
    url: url,
    method: 'post',
    data: qs.stringify(parameter),
    headers: {
      'Content-type': 'application/x-www-form-urlencoded'
    }
  })
}

/**
 * post 上传请求
 * @param {*} url 链接
 * @param {*} parameter 参数
 * @returns 
 */
export function uploadForm (url, formData) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('uploadForm url:%s, post-param:%s', url, formData)
  }
  return request({
    url: url,
    method: 'post',
    data: formData,
    headers: {
      'Content-type': 'multipart/form-data'
    }
  })
}

/**
 * put请求
 * @param {*} url 链接
 * @param {*} parameter 参数
 * @returns 
 */
export function put (url, parameter) {
  if (process.env.NODE_ENV !== 'production') {
    console.log('put url:%s, post-param:%s', url, parameter)
  }
  return request({
    url: url,
    method: 'put',
    data: parameter
  })
}

/**
 * delete请求
 * @param {*} url 链接
 * @param {*} parameter 参数
 * @returns 
 */
export function del (url, parameter) {
  console.log('del url:%s, post-param:%s', url, parameter)
  return request({
    url: url,
    method: 'delete',
    params: parameter
  })
}
